/*************************************************
filename	: music.h
author		: Stefan lulham
desc		: Contains the base music class
			  Music is played on a single channel, when
			  loaded it is assigned a channel and will
			  reuse that channel.
*************************************************/
#ifndef D_MUSIC_H
#define D_MUSIC_H

#include "audio_enums.h"
#include <delgeError.h>

using namespace DelGE;

namespace DelGE
{
	namespace Modules
	{
		namespace Audio
		{
			class Music
			{
			protected:
				DelGEAudioPlaybackMode ePlaybackMode;

				float fVolume;
				bool bIsPaused;

				unsigned int uiLengthMS;

			public:
				virtual ~Music() {};

				virtual void Play() = 0;

				virtual void SetPlaybackMode(DelGEAudioPlaybackMode ePlaybackMode) = 0;
				DelGEAudioPlaybackMode GetPlaybackMode();

				virtual void Pause() = 0;
				virtual void Resume() = 0;

				virtual void SetVolume(float fVolume) = 0;
				float GetVolume();

				virtual float GetPosition() = 0;
				unsigned int GetLengthInMS();

				virtual bool IsPlaying() = 0;
				bool IsPaused();
			};
		}
	}
}

#endif